﻿using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace YouDaoNotesCodes
{
    class array
    {
        //数组类
        public void arrayDefind()//一维数组define
        {
            string[] array = new string[3];
            Console.WriteLine("数组：");
            for (int i = 0; i < 3; i++)
            {
               array[i] = Console.ReadLine();
               Console.WriteLine(array[i]);
            }       
        }
        public void arrayBianli()//一维数组遍历
        {
            int[] array = new int[] { 1, 2, 3, 4, 5, 6 };
            string str = string.Empty;
            foreach (int num in array)
            {                
                str=num <= 1 ? num.ToString() : (str + ","+ num.ToString());
            }
            Console.WriteLine(str);
            Console.ReadKey();
        }
        public void arrayHebing()
        {
            int[] num1 = new int[] { 1, 2, 3 };
            int[] num2 = new int[] { 4, 5, 6 };
            //2个一维数组合并为1个一维数组;
            int n = num1.Length + num2.Length;
            int[] num3 = new int[n];
            for (int i = 0; i < num3.Length; i++)
            {
                if (i < num1.Length)
                {
                    num3[i] = num1[i];
                }
                else
                {
                    num3[i] = num2[i - num1.Length];
                }
            }
            Console.WriteLine("2个一维数组合并为1个一维数组;");
            foreach(int x in num3)
            {       
                Console.Write("{0}",x+"、");//对比format();     
            }
            Console.WriteLine();
           //2个一维数组合并为1个二维数组;
            int[,] num4=new int[2,3];
            for (int i = 0; i < num4.Rank; i++)
            {
                switch (i)
                {
                    case 0:
                        {
                            for (int j = 0; j < num1.Length; j++)
                            {
                                num4[i, j] = num1[j];
                            }
                            break;
                        }
                    case 1:
                        {
                            for (int k = 0; k < num2.Length; k++)
                            {
                                num4[i, k] = num2[k];
                            }
                            break;
                        }
                }
            }
            Console.WriteLine("2个一维数组合并为1个一维数组;");
            for (int i = 0; i < num4.Rank; i++)
            {
                for (int j = 0; j < num4.GetUpperBound(num4.Rank-1)+1; j++)
                {
                    Console.Write(num4[i,j]+"");
                }
            }
                Console.ReadKey();
         }
        public void shuzucaozuo() //数组的几个函数操作
        {
            int[,] array = new int[,] { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };//定义一个3行3列的二维数组
            int row = array.Rank;//获取维数，这里指行数
            int col1 = array.GetLength(1);//获取指定维度中的元素个数，这里也就是列数了。（0是第一维，1表示的是第二维）
            int col2 = array.GetUpperBound(array.Rank - 1) + 1;//获取指定维度的索引上限，在加上一个1就是总数，这里表示二维数组的行数
            int num = array.Length;//获取整个二维数组的长度，即所有元的个数
            Console.WriteLine("-------:" + (array.Rank - 1).ToString());
            Console.WriteLine("Rank:获取维数，这里指行数:" + row);
            Console.WriteLine("GetLength(1):获取指定维度中的元素个数，这里也就是列数:" + col1);
            Console.WriteLine("GetUpperBound(0)+1:这里表示二维数组的行数" + col2);
            Console.WriteLine("Length:获取整个二维数组的长度" + num);
            Console.ReadKey();
        }

        //ArrayList类
        public void arrayList()
        {
            string[] str = new string[] { "1", "2", "3", "4" };
            ArrayList list = new ArrayList(str);
            //list.Add(str);这种添加方式是错误的
            list.Add("element1");//将对象添加到ArrayList末尾
            list.Insert(1, "element2");//指定位置添加一个元素,从0开始索引      
            list.Remove("3");//移除特定对象的第一个匹配项
            list.RemoveRange(2, 2);//移除一定范围里的元素，例如：从索引2出删除2个元素
            list.Contains("4");
            list.Clear();//移除AyyayList所有元素
            foreach (string temp in list)//遍历
            {
                Console.Write("{0},", temp);
            }
            Console.ReadKey();
        }
        public void testMethod()//数组测试方法
        {
            string[] str = new string[] { "1", "2", "3", "4" };
            foreach (string mid in str)
            {
                Console.Write("" + mid);
            }
            Console.ReadKey();
        
        }
    }
}
